<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>hello vue组件-全局组件</title>
    <link rel="stylesheet" type="text/css" href="./lib/bootstrap/css/bootstrap.css">
    <link rel="stylesheet" href="./css/vue2-animate.css" type="text/css">

    <script type="text/javascript" src="./lib/vue/vue.js"></script>
    <script type="text/javascript" src="./lib/jquery/jquery.min.js"></script>
    <script type="text/javascript" src="./lib/bootstrap/js/bootstrap.js"></script>
    <style>

    </style>

</head>

<body>
    
    <div id="box" class="container">
        <h1>父组件获取子组件数据：$.emit(事件名称, 数据)</h1>
        <h3 style="color:red">HTML属性不区分大小写，所以对于自定义o事件名称要小写。
            例如：@childData 不会生效，需要写成@childdata
        </h3>
        <!-- 引用自定义父组件  -->
        <parent>
        </parent>
    </div>

    <!-- 父组件  -->
    <template id="parent">
        <div>
            <hr/> 父组件数据：
            <span style="color:red;">{{pmessage}}, {{age}}</span>
            <h2>父组件：aaaaaa</h2>
            <!-- 父级接收子组件数据通过 on 接收  -->
            <!-- 父组件中引用子组件  -->
            <cmp :pdata="pmessage" :my-data="age" @childdata="getChildData"></cmp>

        </div>
    </template>

    <!-- 子组件  -->
    <template id="cmp">
        <div class="">
            <h3>子组件：bbbbbbbb，读取父组件数据：<span style="color:red">{{pdata}} == {{myData}}</span></h3>
            <input type="button" name="" @click="sendData($event)" value="发送数据到父组件" />
        </div>
    </template>

</body>


<script>
    var v = new Vue({
        el: '#box',
        components: {
            // 父组件
            'parent': {
                template: '#parent', // 关联template标签中的ID属性
                data() {
                    return {
                        pmessage: '我是父组件数据',
                        age: 33,
                    }
                },
                methods: {
                    getChildData(v) {
                        // 用子组件传递给父组件的数据，重写父组件属性值
                        this.pmessage = v[0];
                        this.age = v[1]
                        // this.pmessage = value;
                    }
                },
                components: {
                    // 子组件
                    'cmp': {
                        data() {
                            return {
                                cmessage: '我是子组件数据',
                                phone: 13577777777,
                                age: 88
                            }
                        },
                        // 属性命中带有“-”时，{{}}中需要驼峰命名
                        props: {
                            pdata: String,
                            myData: Number
                        },
                        // pdata 为cmp绑定的属性名  :pdata
                        template: '#cmp',
                        methods: {
                            sendData(e) {
                                // 子组件把数据发送给父组件
                                this.$emit('childdata', [this.phone, this.age]);
                                console.log(e.clientX);
                            }
                        }
                    }
                }
            }
        }

    });
</script>

</html>